If you have ever been annoyed at having to reach for the mouse to respond to the “Replace existing fubar?” dialog, here are some ways to fix it with ResEdit. Before giving the recipes, I should mention that responsible experts always say that you should only use ResEdit on a *copy* of your System file, not the one that is in use. Personally, I don’t bother, but don’t say you weren’t warned.
System 6
Open the ALRT -3996 resource in the System. Select “Set 'ALRT' Stage Info…” from the menu. In the resulting dialog box, change the radio buttons to indicate that Cancel, rather than OK, is the default button at each stage.
System 7
For our first hack, we have a way to make Replace rather than Cancel be the default button. First, edit the DITL -6045 resource. Click on the Cancel button, then select “Set item number…” from the menu and change the number from 2 to 1. Close the DITL editor, and open the PACK 3 resource. ResEdit will warn you that this resource is compressed and editing it will decompress it, but never mind that. Normally you will get the hex editor, but if you happen to have the CODE editor installed in your copy of ResEdit, you may have to open the hex editor manually. Anyway, find offset 9F0, and change 5340 to 5540. (If what you see at offset 9F0 is not 5340, all bets are off.) Close the System and save changes.
Second, there is a hack by Elizabeth Wylie that leaves the buttons alone, but lets you Save with the option key pressed and replace the existing file without even seeing the dialog. Open the PACK 3 resource with the hex editor. At offset 9EC, change 6100 16B0 to 6100 2B2A. At the end of the resource, append:
1038 017B 0800 0002
6700 0006 7001 4E75
61FF FFFF EB74 4E75
Close and save changes.
Finally, you could use both hacks, with one minor change to the second hack: Where you see 7001 above, use 7002 instead.
For programmers, here’s the disassembly of the PACK 3 hacks. The first hack replaces
SUBQ.W #$1, D0
with
SUBQ.W #$2, D0
This instruction is followed by a test of whether D0 is zero or not.
The second hack replaces
BSR *+$16B2 ; 0000209E
with
BSR *+$2B2C ; 00003518
and appends
move.B $017B, D0 ; Get the byte at KeyMap + 7.
btst #$02, D0 ; Is the option key down?
beq *+$0008 ; If not, do usual stuff
moveQ #$01, D0 ; If so, skip the dialog.
RTS
bsr.L *-$0000148A ; 0000209E
RTS
In the combination hack, the part that’s appended would have to say